home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 7
/
Amiga Format AFCD07 (Dec 1996, Issue 91).iso
/
serious
/
shareware
/
cd-rom
/
cdplay370
/
demo
/
cdplay_demo.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-09-19
|
5KB
|
147 lines
/*
** cdplay_demo.c
**
** © 1995, 96 by Patrick Hess, all rights reserved.
** $VER: cdplay_demo.c 1.0 (20.09.1996)
**
** simple usage demo of the cdplay.library
**
*/
/* I`m always using my all.gst file with precompiled includes.
You have to insert necessary includes yourself, sorry! */
#include <libraries/cdplay.h>
#include <proto/cdplay_protos.h>
#include <pragmas/cdplay_pragmas.h>
struct Library *CDPlayBase;
void main (int argc, char **argv)
{
struct CDRequest *cdr;
int i = 0;
if (argc != 2)
{
Printf ("Usage: %s <Arg>\n", argv[0]);
exit (NULL);
}
if (CDPlayBase = OpenLibrary (CDPLAYNAME, CDPLAYVERSION))
{
if (cdr = CDOpenDrive ("2060scsi.device", 2))
{
Printf ("Device is open.\n");
switch (argv[1][0])
{
case 'd':
Printf ("%s\n", cdr->cdr_ID);
break;
case 'j':
CDJump (((argv[1][1] == '-') ? -150 : 150), cdr);
break;
case 'l':
CDLockDrive ((argv[1][1] == '1' ? TRUE : FALSE), cdr);
break;
case 'o':
CDOpen (cdr);
break;
case 'c':
CDClose (cdr);
break;
case 's':
CDStop (cdr);
break;
case 'n':
CDNext (cdr);
break;
case 'b':
CDPrev (cdr);
break;
case 'g':
CDPlay ((argv[1][1] - '0'), cdr);
break;
case 'p':
CDPause ((argv[1][1] == '1' ? TRUE : FALSE), cdr);
break;
case 't':
Printf ("Title: %02ld:%02ld of %02ld:%02ld, %02ld:%02ld remaining.\n",
base2min (cdr->cdr_Time->cdt_TrackCurBase), base2sec (cdr->cdr_Time->cdt_TrackCurBase),
base2min (cdr->cdr_Time->cdt_TrackCompleteBase), base2sec (cdr->cdr_Time->cdt_TrackCompleteBase),
base2min (cdr->cdr_Time->cdt_TrackRemainBase), base2sec (cdr->cdr_Time->cdt_TrackRemainBase));
Printf ("CD: %02ld:%02ld of %02ld:%02ld, %02ld:%02ld remaining.\n",
base2min (cdr->cdr_Time->cdt_AllCurBase), base2sec (cdr->cdr_Time->cdt_AllCurBase),
base2min (cdr->cdr_Time->cdt_AllCompleteBase), base2sec (cdr->cdr_Time->cdt_AllCompleteBase),
base2min (cdr->cdr_Time->cdt_AllRemainBase), base2sec (cdr->cdr_Time->cdt_AllRemainBase));
break;
case 'i':
Printf ("DeviceType %ld, ANSIVersion %ld, ResponseFormat %ld, ISOVersion %ld, ECMAVersion %ld.\n", cdr->cdr_Inquiry->cdi_DeviceType, cdr->cdr_Inquiry->cdi_ANSIVersion, cdr->cdr_Inquiry->cdi_ResponseFormat, cdr->cdr_Inquiry->cdi_ISOVersion, cdr->cdr_Inquiry->cdi_ECMAVersion);
Printf ("%s (Vendor), %s (ProductID), %s (RevLevel), %s (VendorSpecific)\n", cdr->cdr_Inquiry->cdi_VendorID, cdr->cdr_Inquiry->cdi_ProductID, cdr->cdr_Inquiry->cdi_RevisionLevel, cdr->cdr_Inquiry->cdi_VendorSpecific);
if (cdr->cdr_Active != SCSI_STAT_NO_DISK)
{
Printf ("%ld max sector, sector size %ld, %ld bytes capacity.\n", cdr->cdr_Capacity->cdc_MaxSector, cdr->cdr_Capacity->cdc_SectorSize, cdr->cdr_Capacity->cdc_Capacity);
Printf ("%s, %s, %s, %s, %s\n%s, %s, %s, %s, %s.\n", (btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_REMOVABLE) ? "REMOVABLE" : "NOT REMOVABLE"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_AENC) ? "AENC" : "NO AENC"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_REL_ADDRESS) ? "REL_ADDRESS" : "NO REL_ADDRESS"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_16WIDE_DATA) ? "16WIDE_DATA" : "NO 16WIDE_DATA"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_32WIDE_DATA) ? "32WIDE_DATA" : "NO 32WIDE_DATA"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_SYNC) ? "SYNC" : "NO SYNC"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_LINKED) ? "LINKED" : "NOT LINKED"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_CMDQUE) ? "CMDQUE" : "NO CMDQUE"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_SOFTRESET) ? "SOFTRESET" : "HARDRESET"),
(btst (cdr->cdr_Inquiry->cdi_Flags, IFLAG_TRMIOP) ? "TRMIOP" : "NO TRMIOP"));
Printf ("TOCSize %ld bytes, first track: %ld, last track: %ld\n", cdr->cdr_TOC->cdptoc_TOCSize, cdr->cdr_TOC->cdptoc_FirstTrack, cdr->cdr_TOC->cdptoc_LastTrack);
for (i = cdr->cdr_TOC->cdptoc_FirstTrack; i <= cdr->cdr_TOC->cdptoc_LastTrack; i++)
{
struct CDTrack *tr;
tr = &cdr->cdr_TOC->cdptoc_Track[i];
Printf ("track %ld: position %ld, subchan %ld, %s pre_emph, %s copy proh., %s, %s\n", i, tr->tr_Position, tr->tr_SubChan, (btst (tr->tr_Flags, IFLAG_PRE_EMPHASIS) ? "" : "no"), (btst (tr->tr_Flags, IFLAG_COPY_PROHIBITED) ? "" : "no"), (btst (tr->tr_Flags, IFLAG_AUDIO_TRACK) ? "audio" : "data"), (btst (tr->tr_Flags, IFLAG_2_CHAN) ? "2 chan" : "4 chan"));
}
Printf ("cur track %ld, cur address %ld, active %ld\n", cdr->cdr_CurrentTrack, cdr->cdr_CurrentAddress, cdr->cdr_Active);
}
else
PutStr ("no disk in drive\n");
break;
default:
Printf ("unknown command.\n");
break;
}
CDCloseDrive (cdr);
}
else
PutStr ("Can`t open device.\n");
CloseLibrary (CDPlayBase);
}
else
Printf ("Can`t open \"%s\" Version %ld.\n", CDPLAYNAME, CDPLAYVERSION);
}